import {PluginCommand} from "../Command/PluginCommand";
import {ElementType} from "../modeling/TypeDefine";

class ConvertGridToHookfaceCommand extends PluginCommand {
    /**
     * 构造
     */
    constructor() {
        super();
    }

    /**
     * 鼠标移动时只能拾取面片，并构造三角面片的渲染信息实现黄色高亮
     * @param cb 回调参数
     */
    pickTriangleMesh(cb) {
        super.setSelectType(ElementType.MESH);
        if(this.event){
            this.event.subscribeHighlightTriangleMeshOutLineEvent(e=>{
                cb(e);
            })
        }
    }

    /**
     * 鼠标按下时，高亮 鼠标移动时选中的面片
     * @param cb 回调参数
     */
    addSelected(cb) {
        if(this.event){
            this.event.subscribeHighLightSelectMeshEvent(meshInfo=>{
                cb(meshInfo);
            })
        }
    }

    /**
     *  创建网格转曲面特征
     * @param cmd 发送命令参数
     * @param cb  回调参数
     */
    createMesh(cmd,cb) {
        if (this.toolQuery) {
            this.toolQuery.executeCreateMeshCmd({cmd: cmd});
        }
    }

    /**
     * 计算按钮的预览
     * @param cmd  发送命令参数
     * @param cb  回调参数
     */
    previewMesh(cmd,cb){
        if (this.toolQuery) {
            this.toolQuery.executePreviewMeshCmd({cmd: cmd});
        }
    }

    /**
     * 根据索引移除列表中的面片
     * @param index  面片索引
     */
    removeItemByIndex(index){
        if(this.toolQuery){
            this.toolQuery.removeSelectedTriangleItemByIndex({index});
        }
    }

    /**
     * 高亮列表中选中的面片
     * @param item  面片信息
     */
    highlightItem(item){
        if (this.toolQuery) {
            this.toolQuery.highlightTriangleByItem({item});
        }
    }

    /**
     * 清除所有高亮信息
     */
    clearAllHighlight(){
        if (this.toolQuery) {
            this.toolQuery.clearAllHighligts();
        }
    }
}

const convertGridToHookfaceCmd = new ConvertGridToHookfaceCommand();
export {convertGridToHookfaceCmd};